#ifndef B64_ENCODE_H
#define B64_ENCODE_H

#define RES_OK 0
#define ERROR_ESCRITURA 1
#define ERROR_LECTURA -2
#define TAM_BUFFER 6

/*  Estructura que almacena informacion sobre los datos
	codificados para ser escritos en el archivo de salida. */
typedef struct {
	unsigned char buffer;
	unsigned char index;
	unsigned long fileLength;
} buffer;

/*  Estructura que almacena tres bytes que seran leidos
	del archivo de entrada. */
typedef struct {
	unsigned char a, b, c;
} encode_block;

extern int read_from_input(encode_block* b, int fdin);
extern unsigned char get_encoding(unsigned char byte);
extern int push_bit_to_buffer(buffer* buff, unsigned char bit, int fdout);
extern int write_to_buffer(buffer* buff, unsigned char byte, unsigned int finalBit, int fdout);

#endif /*  B64_ENCODE_H */
